我的Bilibili频道:香芋派Taro
我的个人博客:taropie0224.github.io(阅读体验更佳)
我的公众号:香芋派的烘焙坊
我的音频技术交流群:1136403177
我的个人微信:JazzyTaroPie

https://leetcode.cn/problems/reverse-integer/

题解and思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
int reverse(int x) {
if (x == 0) return 0;
bool isPositive = true; //用于判断是否是正数
if (x < 0) {
x = abs(x);
isPositive = false;
}
while (x % 10 == 0) { //去除末尾的0
x = x / 10;
}
string s = to_string(x); //int转string
std::reverse(s.begin(), s.end()); //反转string,由于题目给定的函数也叫reverse,这里需要加上std::
long long n = strtoll(s.c_str(), nullptr, 10); //转换成long long就不会溢出了,这里用到了string转long long的strtoll,感觉很冷门...
n = isPositive ? n : -n; //如果之前是负数,那就把负号加上
if (n > pow(2, 31) - 1 || n < -pow(2, 31)) { //判断是否超过题目要求的范围
return 0;
}
return n;
}
};

补充

string转long long

1
long long x = strtoll(s.c_str(), nullptr, 10);

string转int

1
int x = atoi(s.c_str());